package com.example.demo;

import java.awt.*;

public class Bullet extends GameObject{
    //发射子弹的游戏元素
    GameObject attacker;
    //目标
    GameObject target;
    //攻击力
    int ad;

    public Bullet(GameFrame gameFrame, GameObject attacker, GameObject target,int ad,int spb) {
        super(gameFrame,attacker.getX(),attacker.getY());
        this.attacker = attacker;
        this.target = target;
        setAd(ad);
        setSpd(spb);
    }

    public void move(){
        //子弹与目标碰撞，子弹消失，目标减血
        if (revIntersectsRec(getRec(),target.getRec())){
            target.setCurrentHp(target.getCurrentHp() - getAd());
            gameFrame.removeList.add(this);
        }

            int dis = (int) getDis(getX(), getY(), target.getX(), target.getY());
            if(dis>0) {
            int xSpeed = (int) (getSpd() * (target.getX() - getX()) / dis);
            int ySpeed = (int) (getSpd() * (target.getY() - getY()) / dis);
            setX(getX() + xSpeed);
            setY(getY() + ySpeed);
        }else if (dis<=0){
                gameFrame.removeList.add(this);
            }

        if (!target.isAlive()){
            gameFrame.removeList.add(this);
        }
    }

    public Rectangle getRec() {
        return new Rectangle(getX()-5,getY()-5,10,10);
    }

    public void paintSelf(Graphics g) {
        g.drawImage(getImg(),getX()-16,getY()-16,null);
        g.setColor(Color.BLACK);
        g.fillOval(getX()-5,getY()-5,10,10);
        g.drawRect(getX()-5,getY()-5,10,10);
        move();
    }

    public int getAd() {
        return ad;
    }

    public void setAd(int ad) {
        this.ad = ad;
    }
}
